package com.yiji.fintech.musfinance.common.domain.base;

import com.acooly.core.utils.Money;
import com.acooly.core.utils.enums.ResultStatus;
import com.yiji.fintech.musfinance.base.enums.*;
import com.yiji.fintech.musfinance.common.annotation.ChannelAnnotation;
import com.yiji.fintech.musfinance.common.enums.TrustModelEnum;
import lombok.Data;

/**
 * Created by ouwen@yiji.com} on 2017/9/12.
 */
@Data
public class BaseDomain {
    /**
     * gid
     */
    private String gid;

    /**
     * 内部流水号
     */
    private String bizOrderNo;

    /**
     外部流水号
     */
    private String merchOrderNo;
    /**
     * 渠道编码
     */
    private String gatewayChannelApi;
    /**
     * 申请金额
     */
    private Money amount;
    /**
     * 托管模式
     */
    private TrustModelEnum trustModel;
    /**
     * 接入商户id
     */
    @ChannelAnnotation()
    private String partnerId;
    /**
     *交易类型
     */
    @ChannelAnnotation()
    private TransactionTypeEnum transactionType;
    /**
     子交易类型
     */
    @ChannelAnnotation()
    private SubTransactionTypeEnum subTransactionType;
    /**
     * 证件类型
     * 代扣:付款方
     * 提现:收款方
     */
    @ChannelAnnotation()
    private CertTypeEnum certType = CertTypeEnum.IDENTITY_CARD;
    /**
     卡类型
     * 代扣:付款方
     * 提现:收款方
     */
    @ChannelAnnotation()
    private CardTypeEnum cardType = CardTypeEnum.DEBIT;
    /**
     * 对公对私
     * 代扣:付款方
     * 提现:收款方
     **/
    @ChannelAnnotation()
    private PersonalCorporateTypeEnum personalCorporateType = PersonalCorporateTypeEnum.PERSONAL;
    /**
     * 银行编码
     * 代扣:付款方
     * 提现:收款方
     **/
    @ChannelAnnotation()
    private String instBankId;
    /**
     * 验证要素类型
     * */
    @ChannelAnnotation()
    private ElementTypeEnum elementType;

    /**
     * 交易标识
     */
    private TradeTypeEnum tradeType;

    /**
     * 币种 */
    private CurrencyEnum currency = CurrencyEnum.CNY;
    /**
     * 交易状态
     */
    private TransStatusEnum transStatus = TransStatusEnum.INITIAL;
    /**
     * 结果状态
     */
    private ResultStatus status;
    /**
     * 结果状态码
     */
    private String code;
    /**
     * 结果消息
     */
    private String detail;
}
